/**
 * 列表
 */
export default class KList<T> {
  private list: T[] = []

  /**
   * 追加元素
   * @param item
   */
  push(item: T) {
    this.list.push(item)
  }

  /**
   * 获取并移除最后一个元素
   */
  pop(): T | null {
    return this.list.pop()
  }

  /**
   * 随机获取元素.
   * @param num
   */
  random(num: number): T[] {
    const arr = [...this.list]
    const result: T[] = []
    let i = 0
    while (i < num) {
      const idx = <number>gameapi.get_random_int(0, arr.length - 1)
      result.push(arr[idx])
      arr.splice(idx, 1)
      i++
    }
    return result
  }

  /**
   * 清空
   */
  clear() {
    this.list = []
  }
}
